package com.crm.web.action;

import javax.annotation.Resource;

import org.apache.jasper.tagplugins.jstl.core.If;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;

import com.crm.domain.PageBean;
import com.crm.domain.SaleVisit;
import com.crm.domain.User;
import com.crm.service.SaleVisitService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class SaleVisitAction extends ActionSupport implements ModelDriven<SaleVisit> {

	private SaleVisit saleVisit = new SaleVisit();
	
	@Override
	public SaleVisit getModel() {
		return saleVisit;
	}
	
	// Spring注入属性的步骤
	/*1. 在applicationContext.xml中添加开启注解注入属性的配置
	2. 在需要注入属性的类中添加属性
	3. 在属性的上方添加注解
	具体如下*/
	
	// 注入Service
	@Resource(name="saleVisitService")
	private SaleVisitService saleVisitService;
	
	// 分页查询所需条件
	// 当前页(默认为1)
	private Integer currPage = 1;
	// 接收浏览器传过来的当前页
	public void setCurrPage(Integer currPage) {
		if (currPage == null) {
			currPage = 1;
		}
		this.currPage = currPage;
	}
	
	// 页面大小（一页显示多少条数据，默认为3）
	private Integer pageSize = 3;
	// 接收浏览器传过来的页面大小
	public void setPageSize(Integer pageSize) {
		if (pageSize == null) {
			pageSize = 3;
		}
		this.pageSize = pageSize;
	}
	
	// 测试方法
	public String print(){
		saleVisitService.print();
		return NONE;
	}
	
	// 查询所有（带分页）
	public String findAll(){
		// 创建离线条件查询对象
		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SaleVisit.class);
		// 设置条件
		if (saleVisit.getUser() != null) {
			// 由于用户id是long类型，long不能为空，所以就没有条件判断了
			detachedCriteria.add(Restrictions.eq("user.user_id", saleVisit.getUser().getUser_id()));
		}

		PageBean<SaleVisit> pageBean = saleVisitService.findByPage(detachedCriteria, currPage, pageSize);
		// 将查询得到的结果放入值栈
		ActionContext.getContext().getValueStack().push(pageBean);;
		return "findAll";
	}

	// 跳转到新增客户拜访页面
	public String saveUI(){
		// 查询所有用户
		return "saveUI";
	}
	
	// 保存客户拜访记录
	public String save(){
		// 调用service保存数据到数据库
		saleVisitService.save(saleVisit);
		return "saveSuccess";
	}

}
